package sgsi.controller.dao.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.List;

import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

import sgsi.controller.dao.AlarmaRunnerDao;
import sgsi.util.Constantes;
import sgsi.view.alarmas.VistaAlarmaCapacidad;
import sgsi.view.alarmas.VistaAlarmaVencimiento;

public class AlarmaRunnerDaoJdbcImpl extends JdbcDaoSupport implements
		AlarmaRunnerDao {

	private String queryAlarmaCapacidad = "CALL sp_ejecutaralarmasporcapacidad(?);";
	private String queryAlarmaVencimiento = "CALL sp_ejecutaralarmasporvencimiento(?);";
	protected static final SimpleDateFormat FORMATTER = new SimpleDateFormat(Constantes.FORMATO_FECHA);

	@SuppressWarnings("unchecked")
	public List<VistaAlarmaCapacidad> ejecutarAlarmarCapacidad(
			int codigoAlarmaCapacidad) {
		Integer[] parametros = { codigoAlarmaCapacidad };
		getJdbcTemplate().setFetchSize(1000);
		return getJdbcTemplate().query(queryAlarmaCapacidad, parametros,
				new VistaAlarmaCapacidadRowMapper());

	}

	@SuppressWarnings("unchecked")
	public List<VistaAlarmaVencimiento> ejecutarAlarmarVencimiento(
			int codigoAlarmaVencimiento) {
		 Integer[] parametros = {codigoAlarmaVencimiento};
		 getJdbcTemplate().setFetchSize(1000);
		 return getJdbcTemplate().query(queryAlarmaVencimiento, parametros,
		 new VistaAlarmaVencimientoRowMapper());
	}

	private class VistaAlarmaCapacidadRowMapper implements
			ParameterizedRowMapper<VistaAlarmaCapacidad> {

		public VistaAlarmaCapacidad mapRow(ResultSet rs, int rowNum)
				throws SQLException {
			return new VistaAlarmaCapacidad(rs.getString(1), rs.getString(2), rs.getString(3), 
											rs.getString(4), rs.getString(5), rs.getString(6), 
											rs.getString(7), rs.getBoolean(9), rs.getBoolean(10), rs.getString(11));
		}
	}

	private class VistaAlarmaVencimientoRowMapper implements
			ParameterizedRowMapper<VistaAlarmaVencimiento> {


		
		public VistaAlarmaVencimiento mapRow(ResultSet rs, int rowNum)
				throws SQLException {
			return new VistaAlarmaVencimiento(rs.getString(1), rs.getString(2), rs.getString(3), 
											  rs.getString(4), rs.getString(5), rs.getString(6), 
											  rs.getString(7), FORMATTER.format(rs.getDate(8)), rs.getString(9));
		}
	}
}
